package se252.jan15.calvinandhobbes.project0; import java.util.ArrayList; import java.util.List; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.simpledb.AmazonSimpleDB; import com.amazonaws.services.simpledb.AmazonSimpleDBClient; import com.amazonaws.services.simpledb.model.Attribute; import com.amazonaws.services.simpledb.model.BatchPutAttributesRequest; import com.amazonaws.services.simpledb.model.DeleteAttributesRequest; import com.amazonaws.services.simpledb.model.Item; import com.amazonaws.services.simpledb.model.ReplaceableAttribute; import com.amazonaws.services.simpledb.model.ReplaceableItem; import com.amazonaws.services.simpledb.model.SelectRequest; public class SDBConn { public static AmazonSimpleDB sdb=null; public static String cat="se252j15-category"; public static String poi="se252j15-pointofinterest"; public static String accessKey=" AKIAJQRRB6CJJKGYGBQQ"; public static String secretKey="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"; public static void initSDB() { AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); sdb = new AmazonSimpleDBClient(credentials); sdb.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1)); } public static LayerInfo[] getCategoryInfo(String category) { LayerInfo[] layerArray = null; ArrayList<LayerInfo> layers = new ArrayList<LayerInfo>(); try{ String catId=null; String queryStr1 = "select CatId from `"+cat+ "` where CatName = '"+category+"'"; SelectRequest selectRequest = new SelectRequest(queryStr1); for (Item item : sdb.select(selectRequest).getItems()) { for (Attribute attribute : item.getAttributes()) { if(attribute.getName().equals("CatId")) { catId=attribute.getValue(); break; } } } String queryString="select * from `"+poi+"` where CatId= '"+catId+"'"; SelectRequest selectRequest1 = new SelectRequest(queryString); for (Item item1 : sdb.select(selectRequest1).getItems()) { LayerInfo lf = new LayerInfo(); lf.setCategory(category); for (Attribute attribute : item1.getAttributes()) { switch (attribute.getName()) { case "Name":lf.setName(attribute.getValue()); break; case "Latitude":lf.setLatitude(Float.parseFloat(attribute.getValue())); break; case "Longitude":lf.setLongitude(Float.parseFloat(attribute.getValue())); break; case "Address":lf.setAddress(attribute.getValue()); break; case "Description":lf.setAddress(attribute.getValue()); break; default: break; } } layers.add(lf); } } catch(Exception e) { System.out.println(e); } layerArray = new LayerInfo[layers.size()]; layers.toArray(layerArray); return layerArray; } public static LayerInfo[] getCategories() { if(sdb==null){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); sdb = new AmazonSimpleDBClient(credentials); sdb.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1)); } LayerInfo[] layerArray = null; ArrayList<LayerInfo> layers = new ArrayList<LayerInfo>(); try { String queryString = "select CatName from `"+cat+"`"; SelectRequest selectRequest = new SelectRequest(queryString); LayerInfo lf = new LayerInfo(); lf.setName("Dining Outside"); lf.setCategory(""); lf.setLatitude(0); lf.setLongitude(0); lf.setDescription(""); layers.add(lf); for (Item item : sdb.select(selectRequest).getItems()) { lf = new LayerInfo(); lf.setCategory(""); lf.setLatitude(0); lf.setLongitude(0); lf.setDescription(""); for (Attribute attribute : item.getAttributes()) { if(attribute.getName().equals("CatName")) lf.setName(attribute.getValue()); } layers.add(lf); } } catch(Exception e) { System.out.println(e); } layerArray = new LayerInfo[layers.size()]; layers.toArray(layerArray); return layerArray; } public static boolean insertLayer(LayerInfo layer) { if(sdb==null){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); sdb = new AmazonSimpleDBClient(credentials); sdb.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1)); } boolean ret = true; String catId = null; String queryStr = "select CatId from `"+cat+ "` where CatName = '"+layer.getCategory()+"'"; SelectRequest selectRequest = new SelectRequest(queryStr); for (Item item : sdb.select(selectRequest).getItems()) { for (Attribute attribute : item.getAttributes()) { if(attribute.getName().equals("CatId")) { catId=attribute.getValue(); break; } } } try { List<ReplaceableItem> Data = new ArrayList<ReplaceableItem>(); Data.add(new ReplaceableItem().withName(catId+"_"+layer.getName()).withAttributes( new ReplaceableAttribute().withName("Name").withValue(layer.getName()), new ReplaceableAttribute().withName("CatId").withValue(catId), new ReplaceableAttribute().withName("Latitude").withValue(String.valueOf(layer.getLatitude())), new ReplaceableAttribute().withName("Longitude").withValue(String.valueOf(layer.getLongitude())), new ReplaceableAttribute().withName("Address").withValue(layer.getAddress()), new ReplaceableAttribute().withName("Description").withValue(layer.getDescription())) ); sdb.batchPutAttributes(new BatchPutAttributesRequest(poi, Data)); } catch(Exception e) { ret = false; System.out.println(e); } return ret; } public static boolean deleteLayer(LayerInfo layer) { if(sdb==null){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); sdb = new AmazonSimpleDBClient(credentials); sdb.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1)); } boolean ret = true; String Id = null; String queryStr1="select CatId from `"+cat+"` where CatName= '"+layer.getCategory()+"' "; String cid=null; SelectRequest selectRequest = new SelectRequest(queryStr1); for (Item item : sdb.select(selectRequest).getItems()) { for (Attribute attribute : item.getAttributes()) { if(attribute.getName().equals("CatId")) { cid=attribute.getValue(); break; } } } String queryStr="select Id from `"+ poi+"` where CatId= '"+cid+"' AND Name = '"+layer.getName()+"'"; SelectRequest selectRequest1 = new SelectRequest(queryStr); for (Item item : sdb.select(selectRequest1).getItems()) { for (Attribute attribute : item.getAttributes()) { if(attribute.getName().equals("Id")) { Id=attribute.getValue(); break; } } } try { sdb.deleteAttributes(new DeleteAttributesRequest(poi,Id)); } catch(Exception e) { System.out.println(queryStr); ret = false; System.out.println(e); } return ret; } /*public static boolean updateLayer(LayerInfo layer, String oldName) { boolean ret = true; try{ if(sdb==null){ AWSCredentials credentials=new BasicAWSCredentials(accessKey,secretKey); sdb = new AmazonSimpleDBClient(credentials); sdb.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1)); } String newName=layer.getName(); layer.setName(oldName); deleteLayer(layer); layer.setName(newName); insertLayer(layer); String catId = null; String oname=null; String old_id=layer.getCategory()+"_"+oldName; String queryStr = "select * from `"+poi+"` where Id = '"+old_id+"' c.catId=p.catId"; SelectRequest selectRequest = new SelectRequest(queryStr); for (Item item : sdb.select(selectRequest).getItems()) { for (Attribute attribute : item.getAttributes()) { if(attribute.getName().equals("CatId")) catId=attribute.getValue(); if(attribute.getName().equals("Name")) oname=attribute.getValue(); } } } catch(Exception e) { System.out.println(); ret = false; System.out.println(e); } return ret; }*/ }